Casper CBC: Detect equivocating message
Description
equivocating
e.g. a validator simultaneously makes two messages, one with an estimate of 0 and another the estimate 1.
Definitions
$ Sender(m_1) = Sender(m_2) ~ \land ~ m_1 \neq m_2 ~ \land ~ m_1 \not\in Justification(m_2) ~ \land ~ m_2 \not\in Justification(m_1)
Note
Not only message itself but also messages in justification can be equivocating. (see: Casper CBC: Detect invalid message)
e.g. Message acknowledges (i.e. includes in its justification) one message from the malicious validator.
Requirement
Each Message from one validator has different sequence number.
There doesn't exist two blocks from the same sender where there is not a clear order between the two protocol states attested to by the justifications ( see: https://github.com/ethereum/cbc-casper/issues/130#issuecomment-349122525 )
e.g. A validator AA sends two messages estimating two different values 0 and 1, and neither references the other in its justification. ( see: http://hackingresear.ch/cbc-finality/index.html )
References
Casper CBC: Detect invalid message
https://github.com/ethereum/cbc-casper/issues/130#issuecomment-349122525
http://hackingresear.ch/cbc-finality/index.html
#Casper